Computational Fluid Dynamics · OpenFOAM RANS Simulation · Personal Project
Role
Individual — CFD Setup, Meshing & Post-Processing
Personal Project · OpenFOAM
Tools
OpenFOAM (simpleFoam, blockMesh)
ParaView
Key Contributions
This page walks through a steady RANS angle-of-attack sweep on a NACA 2412 airfoil in OpenFOAM, from the attached-flow baseline through full bluff-body stall. Design Decision callouts highlight the judgment calls made along the way — particularly around how far to trust a steady solver as the flow separates.
I ran a series of steady incompressible RANS simulations on a NACA 2412 airfoil — 2% max camber at 40% chord, 12% max thickness — across four angles of attack (0°, 15°, 30°, 45°) using OpenFOAM's simpleFoam solver. The goal was to trace the complete aerodynamic lifecycle of a cambered airfoil: clean attached flow, the leading-edge suction peak that builds toward stall, the leading-edge separation of deep stall, and the bluff-body vortex shedding that takes over once the airfoil stops behaving like a wing at all.
simpleFoam (SIMPLE algorithm) — steady, incompressible, with the k-ω SST turbulence model for near-wall and adverse-pressure-gradient behaviorDesign Decision
Trade-off: Re-meshed the domain for each AoA by rotating the airfoil within a fixed O-grid, rather than rotating the inlet velocity vector against a single static mesh.
Why: Rotating the velocity vector would have left skewed inlet/outlet patches relative to the flow direction at every case but the baseline. Re-meshing per case keeps the inlet and outlet boundary conditions clean and axis-aligned at the cost of regenerating the grid four times instead of once — a worthwhile trade for boundary-condition simplicity and solution accuracy.
Even with zero geometric incidence, the airfoil's 2% camber (zero-lift AoA ≈ −2.1°) produces a measurable suction-side lift through asymmetric circulation. The flow stagnates exactly at the leading edge (x/c = 0, Cp = +1.0) and accelerates sharply around the convex upper surface, reaching a suction peak of Cp,min ≈ −0.557 at x/c = 0.22. Even the lower surface shows mild suction over its first 30% chord — camber accelerates flow on both surfaces near the nose, with the upper surface always winning out to produce net lift.
► Pressure convergence animation · ► Velocity convergence animation
At 15°, NACA 2412 is operating close to its maximum lift coefficient. The leading-edge suction peak has intensified dramatically to Cp,min ≈ −3.6, implying a local velocity over twice freestream (≈212 m/s) at the peak. The stagnation point has also migrated — rather than sitting at the geometric nose, it now sits on the lower leading edge, displaced by the angled incoming flow. This is the most aerodynamically efficient point in the sweep: high lift at moderate drag, but riding right at the edge of separation.
► Pressure convergence animation · ► Velocity convergence animation
By 30°, leading-edge separation is fully established. The sharp suction peak from the 15° case has collapsed into a broad, nearly uniform low-pressure plateau (Cp,base ≈ −0.8 to −1.2) covering most of the upper surface — the signature of a separated dead-air region rather than attached flow. A large standing wake vortex appears immediately downstream of the trailing edge in both the pressure and velocity fields; this is the steady-RANS mean-flow approximation of what is physically an unsteady shed vortex.
► Pressure convergence animation · ► Velocity convergence animation
At 45° the airfoil no longer behaves aerodynamically as a wing — it behaves as a bluff body. The near-field pressure plot shows alternating high- and low-pressure regions in a staggered pattern downstream, the signature of a von Kármán-type vortex street. Because this physics is inherently time-periodic, the steady simpleFoam solver cannot converge: the force history oscillates between roughly 4,800 N and 13,100 N well past 500 iterations rather than settling to a fixed value. The extended-domain views resolve a cleaner mean structure — a high-pressure region on the windward face and a deep suction base (Cp,base ≈ −1.0 to −2.0), comparable to a circular cylinder's base pressure at high Re.
► Pressure animation · ► Velocity animation · ► Pressure (far-field) animation · ► Velocity (far-field) animation
Design Decision
Trade-off: Continued the sweep through 45° with the steady solver despite knowing the flow physics had become inherently unsteady, rather than switching to a transient solver once separation appeared.
Why: The goal of this study was to map the qualitative regime transition across the full stall progression, not to extract quantitative loads at high AoA. The steady solver's failure to converge at 45° is itself useful diagnostic evidence of the underlying vortex-shedding physics. For accurate forces in the separated regimes, the correct follow-up is a transient solver (pimpleFoam) or scale-resolving approach (DES/LES) — noted as the next step rather than worked here.
Surface pressure data extracted from the converged α = 0° solution confirms the field-plot interpretation quantitatively. The enclosed area between the upper and lower surface Cp curves is proportional to section lift — a large gap between the curves means meaningful lift; identical curves would mean zero lift.
| Location | Upper Surface Cp | Lower Surface Cp |
|---|---|---|
| Leading edge (x/c ≈ 0) | +1.00 (stagnation) | +0.654 (x/c = 0.004) |
| Suction peak | −0.557 at x/c = 0.22 | −0.363 at x/c = 0.046 |
| Mid-chord | −0.390 (x/c = 0.50) | −0.199 (x/c = 0.25) |
| Trailing edge | +0.136 | +0.152 |
The upper-surface suction peak sits at x/c = 0.22 — just aft of the nose and ahead of the geometric maximum-thickness location (x/c ≈ 0.30) — consistent with inviscid panel-method predictions for this camber distribution. The lower surface shows a smaller, secondary suction region near its own leading edge: camber forces the streamlines to curve concavely on the underside too, just less aggressively than on top. Both surfaces recover to positive Cp by the trailing edge, with the small remaining difference between them (Cp,upper = 0.136 vs. Cp,lower = 0.152) confirming the Kutta condition is satisfied and bound circulation is present.
Stepping back across all four cases shows a clean progression from potential-flow-like behavior to fully separated bluff-body flow — and a corresponding decline in how much the steady RANS solution can be trusted.
| Parameter | α = 0° | α = 15° | α = 30° | α = 45° |
|---|---|---|---|---|
| Flow regime | Attached | Near-stall | Deep stall | Bluff body |
| Cp,min (upper) | −0.557 | ≈ −3.6 | Plateau ≈ −1.0 | Dipole structure |
| Stagnation point | At x/c = 0 | Lower leading edge | Lower surface | Lower windward face |
| Boundary layer | Fully attached | TE thickening | LE separation | Complete separation |
| Steady RANS validity | High | Moderate | Low | Very low |
| Recommended solver | simpleFoam | simpleFoam | pimpleFoam | pimpleFoam / DES |
The widening colorbar range at higher AoA in the raw ParaView plots reflects intensifying pressure gradients as more flow energy is redirected into circulation and ultimately lost to the separated wake. Across every case, the suction side always does more aerodynamic work than the pressure side — a fundamental characteristic of low-speed aerodynamics.
Camber Produces Lift at Zero Incidence
Even at α = 0°, the 2% camber of NACA 2412 generates a clear suction-side pressure asymmetry. This matched thin-airfoil theory's prediction of a non-zero lift coefficient at zero geometric incidence for a cambered section, confirming the simulation was physically sound before pushing into higher-AoA cases.
Stagnation Point Migration Tracks Circulation
Across the sweep, the stagnation point visibly migrates from the geometric leading edge (0°) to deep on the lower surface (45°). That migration is a direct, visual proxy for growing bound circulation — a useful sanity check that didn't require any post-processing to read off the plots.
RANS Validity Degrades Past Stall
Steady RANS is trustworthy through 15°, but the standing-vortex and bluff-body regimes at 30–45° are qualitative only. Recognizing where a solver's assumptions stop holding — rather than reporting unconverged numbers as if they were valid — is as important as the solve itself.
Mesh Artifacts vs. Physical Features
The circular "halo" structures visible in the far-field of several plots are inter-block boundaries in the O-grid topology, not physical flow features — ParaView's color interpolation simply switches discretely across mesh-block interfaces. Telling numerical artifacts apart from real flow structures is a basic but essential post-processing skill.